#include <my_header.h>
// 思路：
// 第一步，先open一个新文件file，分配一个fd文件描述符（此时一般就是3）
//直接调用dup2函数：dup(fd, STDOUT_FILENO)
//此时的操作是先关闭stdout的文件描述符——1
//再让文件描述符1指向fd文件描述符指向的文件，这样就完成了重定向到文件的操作。
/* Usage: ./6_dup2_stdout filename*/
int main(int argc, char *argv[]){                                  
    ARGS_CHECK(argc, 2);
    printf("重定向之前\n");
    int fd= open(argv[1], O_RDWR);
    ERROR_CHECK(fd, -1, "open");

    // 关闭标准输出，再让文件描述符1指向fd对象
    // 重定向stdout到文件
    int fd_cp = dup2(fd, STDOUT_FILENO);
    // 下面的内容将输出到文件中
    printf("fd = %d\n", fd);
    printf("fd_cp = %d\n", fd_cp);
    printf("重定向之后!\n");
    
     fflush(stdout);     // 在关闭文件描述符释放文件对象之前，
    // 刷新一下标准输出缓冲区，避免数据还留在缓冲区中导致数据丢失
    // 关闭文件描述符
    close(fd);
    close(fd_cp);

    return 0;
}

